package co.saep.vista;

import co.saep.logica.LogicaEmpresaLocal;
import co.edu.senaclem.modelo.Empresa;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

@ManagedBean(name = "empresaVista")
@RequestScoped
public class empresaVista {

    @EJB 
     private LogicaEmpresaLocal logicaEmpresa;
    
    private InputText txtNumEmpresa;
    private InputText txtNomEmpresa;
    private InputText txtDirEmpresa;
    private InputText txtTelEmpresa;
    private List<Empresa> listaEmpresas;
    private CommandButton btnRegistrar;
    private CommandButton btnEliminar;
    private CommandButton btnModificar;
    private CommandButton btnLimpiar;
    private Empresa selectEmpresa;
    private Empresa Empresa;
    
            
    public empresaVista() {
        
        
    }

    public InputText getTxtNumEmpresa() {
        return txtNumEmpresa;
    }

    public void setTxtNumEmpresa(InputText txtNumEmpresa) {
        this.txtNumEmpresa = txtNumEmpresa;
    }

    public InputText getTxtNomEmpresa() {
        return txtNomEmpresa;
    }

    public void setTxtNomEmpresa(InputText txtNomEmpresa) {
        this.txtNomEmpresa = txtNomEmpresa;
    }

    public InputText getTxtDirEmpresa() {
        return txtDirEmpresa;
    }

    public void setTxtDirEmpresa(InputText txtDirEmpresa) {
        this.txtDirEmpresa = txtDirEmpresa;
    }

    public InputText getTxtTelEmpresa() {
        return txtTelEmpresa;
    }

    public void setTxtTelEmpresa(InputText txtTelEmpresa) {
        this.txtTelEmpresa = txtTelEmpresa;
    }

    public List<Empresa> getListaEmpresas() {
        if(listaEmpresas==null){
            try {
                listaEmpresas=logicaEmpresa.consultarEmpresa();
            } catch (Exception ex) {
                Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
            }

        }return listaEmpresas;
    }

    public void setListaEmpresas(List<Empresa> listaEmpresas) {
        this.listaEmpresas = listaEmpresas;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public Empresa getSelectEmpresa() {
        return selectEmpresa;
    }

    public void setSelectEmpresa(Empresa selectEmpresa) {
        this.selectEmpresa = selectEmpresa;
    }
    
    public void funcion_limpiar(){
        txtNumEmpresa.setValue("");
        txtNomEmpresa.setValue("");
        txtDirEmpresa.setValue("");
        txtTelEmpresa.setValue("");
        txtNumEmpresa.setDisabled(false);
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }
    public void funcion_registrar(){
        try {
            Empresa emp=new Empresa();
            emp.setNumeroempresa(Long.parseLong(txtNumEmpresa.getValue().toString()));
            emp.setNombreempresa(txtNomEmpresa.getValue().toString());
            emp.setDireccionempresa(txtDirEmpresa.getValue().toString());
            emp.setTelefonoempresa(txtTelEmpresa.getValue().toString());
            logicaEmpresa.registrarEmpresa(emp);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "La empresa se ha registrado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Error", ex.getMessage()));
        }
        listaEmpresas=null;
        funcion_limpiar();
    }
    public void funcion_modificar(){
        try {
            Empresa emp=new Empresa();
            emp.setNumeroempresa(Long.parseLong(txtNumEmpresa.getValue().toString()));
            emp.setNombreempresa(txtNomEmpresa.getValue().toString());
            emp.setDireccionempresa(txtDirEmpresa.getValue().toString());
            emp.setTelefonoempresa(txtTelEmpresa.getValue().toString());
            logicaEmpresa.modificarEmpresa(emp);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "La empresa se ha modificado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaEmpresas=null;
        funcion_limpiar();
    }
    public void funcion_eliminar(){
        try {
            Empresa emp=new Empresa();
            emp.setNumeroempresa(Long.parseLong(txtNumEmpresa.getValue().toString()));
            logicaEmpresa.eliminarEmpresa(emp);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "La empresa se ha eliminado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaEmpresas=null;
        funcion_limpiar();
    }
    public void funcion_seleccionar(SelectEvent event){
        Empresa empSeleccionada=(Empresa) event.getObject();
        txtNumEmpresa.setValue(empSeleccionada.getNumeroempresa());
        txtNomEmpresa.setValue(empSeleccionada.getNombreempresa());
        txtDirEmpresa.setValue(empSeleccionada.getDireccionempresa());
        txtTelEmpresa.setValue(empSeleccionada.getTelefonoempresa());
        txtNumEmpresa.setDisabled(true);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        btnEliminar.setDisabled(false);
    }
}
